Fix dependencies during tests
authorAlex Crichton <alex@alexcrichton.com>
Wed, 23 Jul 2014 18:31:47 +0000 (11:31 -0700)
committerAlex Crichton <alex@alexcrichton.com>
Wed, 23 Jul 2014 18:31:47 +0000 (11:31 -0700)
A library target is needed for testing if any examples or integration tests are
being built, similarly with bin targets.

src/cargo/util/toml.rs

index b30bb7bdf349130c0be6655fb402b01586bcd3e1..40607e93700a6fbf2ad0e27ed926f76af3c83326 100644 (file)
@@ -568,23 +568,30 @@ fn normalize(libs: &[TomlLibTarget],
             let profile = &Profile::default_test();
             dst.push(Target::test_target(test.name.as_slice(),
                                          &path.to_path(),
-                                         profile));
+                                         profile,
+                                         metadata));
         }
     }
 
     let mut ret = Vec::new();
 
+    let test_dep = if examples.len() > 0 || tests.len() > 0 {
+        Needed
+    } else {
+        NotNeeded
+    };
+
     match (libs, bins) {
         ([_, ..], [_, ..]) => {
             lib_targets(&mut ret, libs, Needed, metadata);
-            bin_targets(&mut ret, bins, NotNeeded,
+            bin_targets(&mut ret, bins, test_dep,
                         |bin| format!("src/bin/{}.rs", bin.name));
         },
         ([_, ..], []) => {
-            lib_targets(&mut ret, libs, NotNeeded, metadata);
+            lib_targets(&mut ret, libs, test_dep, metadata);
         },
         ([], [_, ..]) => {
-            bin_targets(&mut ret, bins, NotNeeded,
+            bin_targets(&mut ret, bins, test_dep,
                         |bin| format!("src/{}.rs", bin.name));
         },
         ([], []) => ()